<?php

// 初期設定
if (!defined("IN_APP")) {
	define("IN_APP", true);
	include_once("../../include/init.php");
	requireLogin();
}

// タブ別の設定の読み込み
require_once("tab.include.php");

// ページ名
$page_name = "check_show";

/******************* ページの処理 *******************/

class Answer {
	var $tweet, $name, $status;
}

class NoAnswer {
	var $icon, $twitter_username, $name, $id;
}

// 並び替えの関数
function sortAnswer($a, $b) {
	global $member_list;
	
	$a_sort = -1;$b_sort = -1;
	
	foreach ($member_list as $key => $value) {
		if ($value == $a->tweet->author_id)
			$a_sort = $key;
		else if ($value == $b->tweet->author_id)
			$b_sort = $key;
	}
			
	if ($a_sort == $b_sort) {
		return 0;
	}
	else {
		return $a_sort < $b_sort ? -1 : 1; 
	}
}

// 並び替えの関数
function sortNoAnswer($a, $b) {
	global $member_list;
	
	$a_sort = -1;$b_sort = -1;
	
	foreach ($member_list as $key => $value) {
		if ($value == $a->id)
			$a_sort = $key;
		else if ($value == $b->id)
			$b_sort = $key;
	}
			
	if ($a_sort == $b_sort) {
		return 0;
	}
	else {
		return $a_sort < $b_sort ? -1 : 1; 
	}
}

require_once("../../include/Twitter/list_tweets.php");
require_once("../../include/Twitter/get_icons.php");

// 処理するツイートのidを取得
$tweet_id = trim(@$_GET["subpage"]);

// データベースに接続する
$connect = connectToDb();

// グループの変数を読み込む
$group_id = $_SESSION['group'];
$group_name = getGroupName($connect, $group_id);

// リーダーのidを取得する
$leader_id = getLeaderId($connect, $group_id);

// リーダーのリストの本日のツイートを取得する
if (!($tweets = getTweetsUntilTweetId($leader_id, $group_name, $tweet_id))) {
	$page_name = "twitter_error";
}

// 履歴ページから来ていたら、前のページに表示する
if (@$_SESSION['page_history'])
	$parent_page = "履歴";
else
	$parent_page = "挙手";

$main_tweet = null;

// 挙手ツイートを探す
foreach ($tweets as $tweet) {
	if ($tweet->id == $tweet_id) {
		if (strpos($tweet->text, "【{$group_name}】【挙手】") === 0) {
			$tweet->comment = trim(str_replace("【{$group_name}】【挙手】", "", $tweet->text));
			$main_tweet = $tweet;
		}
		else {
			$error = "表示しようとしていたページは無効です。";
			showErrorPage();
		}
		break;
	}
}

//　無効なページが指定された場合
if (empty($main_tweet)) {
	$error = "表示しようとしていたページは無効です。";
	showErrorPage();
}
else {
	$main_tweet->name = getUserName($connect, $group_id, $main_tweet->author_id);
}

$answers = array(); 		// 回答者の配列
$no_answers = array();		// 未回答者の配列

// エラーが起こってない場合、処理を続ける
if (!$error) {

	// 挙手が投稿された時間を取得
	$timePerformed = $main_tweet->date;

	$presentUsers = getPresentUsers($connect, $group_id, $timePerformed);
	
	// 挙手への返事を探す
	foreach ($tweets as $tweet) {
		$answer = null;
		$current_tweet = $tweet;
		if ($current_tweet->replyTo == $tweet_id) {
			if (array_search($current_tweet->author_id, $presentUsers) !== false) {
				$contents = trim(str_replace("@{$main_tweet->author}", "", $current_tweet->text));
								
				$valid = false;
				
				$already_exists = false;
				
				// 既に配列に入っているかどうか検索する
				foreach ($answers as $answer) {
					if ($answer->tweet->author_id == $tweet->author_id) {
						$already_exists = true;
					}
				}
				
				// 存在していなかったら、配列に追加する
				if (!$already_exists) {
					$answer = new Answer();
					
					if (mb_strpos($contents, "○") === 0) {
						$valid = true;
						$current_tweet->comment = mb_trim(str_replace("○", "", $contents));
						$answer->status = "○";
					}
					else if (mb_strpos($contents, "×") === 0) {
						$valid = true;
						$current_tweet->comment = mb_trim(str_replace("×", "", $contents));
						$answer->status = "×";
					}
					
					if ($valid) {
						$answer->tweet = $current_tweet;
						$answer->name = getUserName($connect, $group_id, $current_tweet->author_id);
						
						array_push($answers, $answer);
					}
				}
			}
		}
	}
	
	// 未回答者の配列を作成する
	$answered_users_ids = array();
	
	foreach ($presentUsers as $key => $user) {
		foreach ($answers as $answer) {
			if ($answer->tweet->author_id == $user) {
				array_push($answered_users_ids, $key);
				break;
			}
		}
	}
	
	$presentUsersWithoutAnswer = $presentUsers;
	foreach ($answered_users_ids as $id) {
		unset($presentUsersWithoutAnswer[$id]);
	}
	
	// 投稿していないユーザーのアイコンをツイッターから取得する
	if (!empty($presentUsersWithoutAnswer)) {
		$icons = getIcons($presentUsersWithoutAnswer);
		
		foreach ($presentUsersWithoutAnswer as $user) {
			$no_answer = new NoAnswer();
			$no_answer->icon = $icons[$user];
			$no_answer->twitter_username = getTwitterUsername($connect, $user);
			$no_answer->name = getUserName($connect, $group_id, $user);
			$no_answer->id = $user;
			
			if ($user != $main_tweet->author_id)
				array_push($no_answers, $no_answer);
		}
	}
	
	
	//　並び替えに使われるグループ順を取得する
	$member_list = getGroupOrder($connect, $group_id);
	
	// 並び替えを行う
	usort($answers, "sortAnswer");
	usort($no_answers, "sortNoAnswer");
}

// データベースとの接続を切断する
mysql_close($connect);

/******************* 処理終了 *******************/

// ページを表示する
$include_path = $SETTINGS['VIEW_PATH'] . $tab_name . "/" . $page_name . $SETTINGS['VIEW_NAME'];
include($include_path);

?>